home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
source
/
swags-z
/
sorting.swg
/
0007_COUNT1.PAS.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-05-28
|
2KB
|
63 lines
{
...Well, as Greg Vigneault reminded me, there is a much faster
method of sorting this sort of data called a "Count" sort. I
often overlook this method, as it doesn't appear to be a sort
at all at first glance:
}
Program Count_Sort_Demo;
Const
co_MaxItem = 200;
Type
byar_MaxItem = Array[1..co_MaxItem] of Byte;
byar_256 = Array[0..255] of Byte;
Var
by_Index : Byte;
wo_Index : Word;
DataBuffer : byar_MaxItem;
SortTable : byar_256;
begin
(* Initialize the pseudo-random number generator. *)
randomize;
(* Clear the CountSort table. *)
fillChar(SortTable, sizeof(SortTable), 0);
(* Create random Byte data. *)
For wo_Index := 1 to co_MaxItem do
DataBuffer[wo_Index] := random(256);
(* Display random data. *)
Writeln;
Writeln('RANDOM Byte DATA');
For wo_Index := 1 to co_MaxItem do
Write(DataBuffer[wo_Index]:4);
(* CountSort the random data. *)
For wo_Index := 1 to co_MaxItem do
inc(SortTable[DataBuffer[wo_Index]]);
(* Display the CountSorted data. *)
Writeln;
Writeln('COUNTSORTED Byte DATA');
For by_Index := 0 to 255 do
if (SortTable[by_Index] > 0) then
For wo_Index := 1 to SortTable[by_Index] do
Write(by_Index:4)
end.
{
...This Type of sort is EXTEMELY fast, even when compared to
QuickSort, as there is so little data manipulation being done.
>BTW, why are there so many different sorting methods?
>Quick, bubble, Radix.. etc, etc
...Because, Not all data is created equally.
(ie: Some Types of sorts perform well on data that is very
random, While other Types of sorts perform well on data
that is "semi-sorted" or "almost sorted".)
}